An earliest TCP (Transmission Control Protocol) data transmission mechanism is designed for a wired network, and the network includes a TCP sending end (hereinafter referred to as sending end) and a TCP receiving end (hereinafter referred to as receiving end). The sending end receives an acknowledgement from the receiving end after sending every packet, where an acknowledgement signal is an ACK (ACKnowledgement) signal. If no ACK is received within a specified time, the sending end retransmits the packet. The receiving end sends an acknowledgement to the sending end after receiving every packet. If receiving a data segment that arrives out of sequence, the receiving end stores the data segment into a buffer, and sends a request for an intermediate lost packet (in a manner of repeating an ACK) to receive the lost packet. The receiving end submits a sequential data segment in the buffer to an application layer at a certain moment.
A data sending rate of the sending end depends on two factors: a buffer size of the receiving end and a bandwidth that can be provided by a communication network. In a process of transmitting TCP data of a wired network, assuming that all packet loss events are caused by network congestion, once the sending end detects a packet loss event, the sending end decreases a sending rate of packets to reduce a network load and avoid congestion. However, in a wireless network environment, the operation is infeasible, because random packet loss caused by a factor other than network congestion may occur on a transmission link of a wireless network. That is, because a wireless link is instable, a burst error occurs in a packet transmission process, so that the TCP receiving end cannot identify and acknowledge the packet. As a result, the packet is “lost”. The burst error occurs randomly, and is usually called random packet loss. If the sending end blindly decreases the data sending rate because it detects a random packet loss event, TCP transmission performance is deteriorated.
Currently, the sending end uses a sliding window mechanism to control the rate. Corresponding to the foregoing two factors, the sending end manages two windows: a receiving window (rcv_wnd) and congestion window (cwnd, Congestion Window), where rcv_wnd indicates a data receiving capability of the receiving end, and cwnd indicates a data transmission capability of the network. In TCP Veno in the prior art, to distinguish whether a packet loss event in the network is caused by network congestion or random packet loss, at the sending end, an identifier N indicating network bandwidth utilization and a constant reference beta are used. A value of N is RTTmin*(cwnd/RTTmin−cwnd/RTT), where in RTTmin (Minimum Round Trip Time), RTTmin indicates a minimum round trip delay detected by the sending end, and its value is an integer that is greater than 0, and RTT (Round Trip Time) indicates a round trip delay. When the sending end detects a packet loss event identified by three repeated ACKs, the sending end compares N with beta. When N is smaller than a beta value, it indicates that a current network bandwidth is not fully utilized, and the sending end considers that the packet loss event is caused by random packet loss, and backs off ssthresh (Slow Start Thresh, slow start threshold) to cwnd*(⅘). When N is greater than or equal to the beta value, it indicates that the current available network bandwidth is fully utilized, and the sending end considers that the packet loss event is caused by network congestion, and backs off ssthresh to cwnd/2. In TCP congestion control, the congestion window value cwnd is compared with the slow start threshold ssthresh. If cwnd is smaller than ssthresh, it is in a slow start state, and a cwnd value increases by 1 every time when the TCP sending end receives an ACK. If cwnd is greater than or equal to ssthresh, it is in a congestion avoidance state, and the cwnd value increases by 1/cwnd every time when the TCP sending end receives one ACK, that is, the cwnd value increases by 1 only when the TCP sending end receives cwnd ACKs.
During the implementation of the foregoing network packet loss processing, the inventor finds that the prior art has at least the following problems: Although, in the prior art, certain filtering is performed on random packet loss in a network, whether a packet loss event is caused by random packet loss cannot be accurately judged because a critical value beta indicating whether a network bandwidth is fully utilized or not fully utilized is a manually-set parameter; and furthermore, backoff processing is still performed on a congestion window after a random packet loss event is identified, so that the sending end transmits data at a lower rate. Therefore, in a network environment with a high packet loss ratio, data transmission performance cannot be ensured.